home *** CD-ROM | disk | FTP | other *** search
- package org.apache.xalan.xslt;
-
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.io.ObjectOutputStream;
- import java.io.OutputStream;
- import java.io.PrintWriter;
- import java.lang.reflect.Constructor;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.util.Date;
- import java.util.Hashtable;
- import java.util.Stack;
- import java.util.StringTokenizer;
- import java.util.TooManyListenersException;
- import java.util.Vector;
- import org.apache.xalan.xpath.XBoolean;
- import org.apache.xalan.xpath.XLocator;
- import org.apache.xalan.xpath.XNodeSet;
- import org.apache.xalan.xpath.XNull;
- import org.apache.xalan.xpath.XNumber;
- import org.apache.xalan.xpath.XObject;
- import org.apache.xalan.xpath.XPath;
- import org.apache.xalan.xpath.XPathEnvSupport;
- import org.apache.xalan.xpath.XPathFactory;
- import org.apache.xalan.xpath.XPathProcessorImpl;
- import org.apache.xalan.xpath.XPathSupport;
- import org.apache.xalan.xpath.XRTreeFrag;
- import org.apache.xalan.xpath.XString;
- import org.apache.xalan.xpath.dtm.DTMLiaison;
- import org.apache.xalan.xpath.xdom.XercesLiaison;
- import org.apache.xalan.xpath.xml.BoolStack;
- import org.apache.xalan.xpath.xml.FormatterToDOM;
- import org.apache.xalan.xpath.xml.FormatterToHTML;
- import org.apache.xalan.xpath.xml.FormatterToXML;
- import org.apache.xalan.xpath.xml.MutableAttrListImpl;
- import org.apache.xalan.xpath.xml.PrefixResolver;
- import org.apache.xalan.xpath.xml.ProblemListener;
- import org.apache.xalan.xpath.xml.ProblemListenerDefault;
- import org.apache.xalan.xpath.xml.QName;
- import org.apache.xalan.xpath.xml.StringToStringTable;
- import org.apache.xalan.xpath.xml.TreeWalker;
- import org.apache.xalan.xpath.xml.XMLParserLiaison;
- import org.apache.xalan.xpath.xml.XMLParserLiaisonDefault;
- import org.apache.xalan.xpath.xml.XSLMessages;
- import org.apache.xalan.xslt.trace.GenerateEvent;
- import org.apache.xalan.xslt.trace.TraceListener;
- import org.apache.xerces.dom.NodeImpl;
- import org.w3c.dom.Attr;
- import org.w3c.dom.CDATASection;
- import org.w3c.dom.Comment;
- import org.w3c.dom.DOMException;
- import org.w3c.dom.Document;
- import org.w3c.dom.DocumentFragment;
- import org.w3c.dom.Element;
- import org.w3c.dom.EntityReference;
- import org.w3c.dom.NamedNodeMap;
- import org.w3c.dom.Node;
- import org.w3c.dom.NodeList;
- import org.w3c.dom.ProcessingInstruction;
- import org.w3c.dom.Text;
- import org.xml.sax.AttributeList;
- import org.xml.sax.DocumentHandler;
- import org.xml.sax.ErrorHandler;
- import org.xml.sax.InputSource;
- import org.xml.sax.Locator;
- import org.xml.sax.SAXException;
-
- public class XSLTEngineImpl implements XPathEnvSupport, XSLTProcessor {
- StylesheetRoot m_stylesheetRoot;
- Node m_rootDoc;
- static final double m_XSLTVerSupported = (double)1.0F;
- static final String m_XSLNameSpaceURL = "http://www.w3.org/1999/XSL/Transform";
- static final String m_XSLT4JNameSpaceURL = "http://xml.apache.org/xslt";
- boolean m_quietConflictWarnings = false;
- private boolean m_traceTemplateChildren = false;
- private boolean m_traceTemplates = false;
- boolean m_traceSelects = false;
- PrintWriter m_diagnosticsPrintWriter;
- Hashtable m_durationsTable = new Hashtable();
- Stack m_stylesheetLocatorStack = new Stack();
- protected String m_pendingElementName;
- protected boolean m_pendingStartDoc = false;
- MutableAttrListImpl m_pendingAttributes = new MutableAttrListImpl();
- protected Stack m_resultNameSpaces = new Stack();
- static final ResultNameSpace m_emptyNamespace = new ResultNameSpace((String)null, (String)null);
- int m_uniqueNSValue;
- /** @deprecated */
- boolean m_translateCSS = false;
- Vector m_topLevelParams = new Vector();
- XMLParserLiaison m_parserLiaison;
- DocumentHandler m_flistener;
- protected Node m_currentNode;
- boolean m_needToCheckForInfiniteLoops = false;
- private StackGuard m_stackGuard = new StackGuard(this);
- private VariableStack m_variableStacks = new VariableStack();
- private String m_outputFileName;
- Stack m_cdataStack = new Stack();
- ResultTreeHandler m_resultTreeHandler = new ResultTreeHandler(this);
- private static XSLMessages m_XSLMessages = new XSLMessages();
- private static final Boolean TRUE = new Boolean(true);
- private static final Boolean FALSE = new Boolean(false);
- transient Vector m_key_tables;
- transient Stack m_attrSetStack;
- private transient CountersTable m_countersTable;
- BoolStack m_currentTemplateRuleIsNull = new BoolStack();
- public static int m_recursionLimit = -1;
- transient Vector m_traceListeners;
- private FormatterToDOM m_sourceTreeHandler;
- private OutputStream m_outputStream;
- private boolean m_isCData = false;
- boolean m_mustFlushStartDoc = false;
-
- final VariableStack getVarStack() {
- return this.m_variableStacks;
- }
-
- CountersTable getCountersTable() {
- if (this.m_countersTable == null) {
- this.m_countersTable = new CountersTable();
- }
-
- return this.m_countersTable;
- }
-
- protected XSLTEngineImpl() throws SAXException {
- try {
- String var1 = "org.apache.xalan.xpath.dtm.DTMLiaison";
- Class var2 = Class.forName(var1);
- Constructor var3 = var2.getConstructor((Class[])null);
- this.m_parserLiaison = (XMLParserLiaison)var3.newInstance((Object[])null);
- this.m_parserLiaison.setEnvSupport(this);
- } catch (Exception var4) {
- throw new XSLProcessorException(var4);
- }
- }
-
- public XSLTEngineImpl(String var1) throws SAXException {
- try {
- Class var2 = Class.forName(var1);
- Constructor var3 = var2.getConstructor((Class[])null);
- this.m_parserLiaison = (XMLParserLiaison)var3.newInstance((Object[])null);
- this.m_parserLiaison.setEnvSupport(this);
- } catch (Exception var4) {
- throw new XSLProcessorException(var4);
- }
- }
-
- public XSLTEngineImpl(XMLParserLiaison var1) {
- this.setExecContext(var1);
- }
-
- XSLTEngineImpl(XMLParserLiaison var1, XPathFactory var2) {
- this.setExecContext(var1);
- }
-
- public void reset() {
- this.m_stylesheetRoot = null;
- this.m_rootDoc = null;
- this.m_durationsTable.clear();
- this.m_countersTable = null;
- this.m_stylesheetLocatorStack.removeAllElements();
- this.m_stylesheetLocatorStack = new Stack();
- this.m_pendingElementName = null;
- this.m_pendingAttributes.clear();
- this.m_pendingAttributes = new MutableAttrListImpl();
- this.m_resultNameSpaces.removeAllElements();
- this.m_cdataStack = new Stack();
- this.m_currentNode = null;
- this.m_needToCheckForInfiniteLoops = false;
- this.m_variableStacks = new VariableStack();
- this.m_stackGuard = new StackGuard(this);
- this.m_parserLiaison.reset();
- }
-
- StackGuard getStackGuard() {
- return this.m_stackGuard;
- }
-
- private void writeObject(ObjectOutputStream var1) throws SAXException, IOException {
- this.error(47);
- }
-
- void switchLiaisonsIfNeeded(Node var1, Node var2) throws SAXException {
- if (var2 != null && var2 instanceof NodeImpl && this.m_parserLiaison instanceof DTMLiaison) {
- if (var1 != null && !(var1 instanceof NodeImpl)) {
- throw new SAXException(XSLMessages.createMessage(102, (Object[])null));
- } else {
- XercesLiaison var4 = new XercesLiaison();
- var4.copyFromOtherLiaison((XMLParserLiaisonDefault)this.m_parserLiaison);
- this.setExecContext(var4);
- }
- } else {
- if (var1 != null && var1 instanceof NodeImpl && this.m_parserLiaison instanceof DTMLiaison) {
- if (var2 != null && !(var2 instanceof NodeImpl)) {
- throw new SAXException(XSLMessages.createMessage(102, (Object[])null));
- }
-
- XercesLiaison var3 = new XercesLiaison();
- var3.copyFromOtherLiaison((XMLParserLiaisonDefault)this.m_parserLiaison);
- this.setExecContext(var3);
- }
-
- }
- }
-
- public void process(XSLTInputSource var1, XSLTInputSource var2, XSLTResultTarget var3) throws SAXException {
- try {
- this.switchLiaisonsIfNeeded(var1.getNode(), var3.getNode());
- if (var2 != null && ((InputSource)var2).getSystemId() != null) {
- ((InputSource)var2).getSystemId();
- }
-
- Boolean var4 = new Boolean(true);
- this.pushTime(var4);
- Node var5 = null;
- if (var1 != null) {
- var5 = this.getSourceTreeFromInput(var1);
- }
-
- if (var2 != null) {
- this.m_stylesheetRoot = this.processStylesheet(var2);
- } else if (var5 == null) {
- this.error(48);
- } else {
- Object var6 = null;
- Stack var7 = new Stack();
-
- for(Node var8 = var5.getFirstChild(); var8 != null; var8 = var8.getNextSibling()) {
- if (var8.getNodeType() == 7) {
- ProcessingInstruction var9 = (ProcessingInstruction)var8;
- if (var9.getNodeName().equals("xml-stylesheet") || var9.getNodeName().equals("xml:stylesheet")) {
- boolean var10 = true;
- StringTokenizer var11 = new StringTokenizer(var9.getNodeValue(), " \t=");
-
- while(var11.hasMoreTokens()) {
- if (var11.nextToken().equals("type")) {
- String var12 = var11.nextToken();
- var12 = var12.substring(1, var12.length() - 1);
- if (!var12.equals("text/xsl")) {
- var10 = false;
- }
- }
- }
-
- if (var10) {
- var11 = new StringTokenizer(var9.getNodeValue(), " \t=");
-
- while(var11.hasMoreTokens()) {
- if (var11.nextToken().equals("href")) {
- String var17 = var11.nextToken();
- var17 = var17.substring(1, var17.length() - 1);
- var7.push(var17);
- }
- }
- }
- }
- }
- }
-
- boolean var19 = true;
-
- for(Stylesheet var20 = null; !((Vector)var7).isEmpty(); var19 = false) {
- Stylesheet var22 = this.getStylesheetFromPIURL((String)var7.pop(), var5, var1 != null ? ((InputSource)var1).getSystemId() : null, var19);
- if (!var19) {
- var20.m_imports.addElement(var22);
- }
-
- var20 = var22;
- }
- }
-
- if (this.m_stylesheetRoot == null) {
- this.error(49);
- }
-
- if (var5 != null) {
- this.m_stylesheetRoot.process(this, var5, var3);
- if (this.m_diagnosticsPrintWriter != null) {
- this.displayDuration("Total time", var4);
- return;
- }
- }
- } catch (MalformedURLException var13) {
- this.error(0, new Object[]{((Throwable)var13).getMessage()}, var13);
- return;
- } catch (FileNotFoundException var14) {
- this.error(0, new Object[]{((Throwable)var14).getMessage()}, var14);
- return;
- } catch (IOException var15) {
- this.error(0, new Object[]{((Throwable)var15).getMessage()}, var15);
- return;
- } catch (SAXException var16) {
- this.error(79, (Exception)var16);
- }
-
- }
-
- public StylesheetRoot createStylesheetRoot(String var1) throws MalformedURLException, FileNotFoundException, IOException, SAXException {
- return new StylesheetRoot(this, var1);
- }
-
- public StylesheetRoot processStylesheet(XSLTInputSource var1) throws SAXException {
- if (this.m_stylesheetRoot != null) {
- this.reset();
- }
-
- String var2 = var1 != null && ((InputSource)var1).getSystemId() != null ? ((InputSource)var1).getSystemId() : "Input XSL";
-
- try {
- this.m_stylesheetRoot = this.createStylesheetRoot(((InputSource)var1).getSystemId());
- this.addTraceListenersToStylesheet();
- StylesheetHandler var3 = new StylesheetHandler(this, this.m_stylesheetRoot);
- if (var1.getNode() != null) {
- if (var1.getNode() instanceof StylesheetRoot) {
- this.m_stylesheetRoot = (StylesheetRoot)var1.getNode();
- } else {
- TreeWalker var4 = new TreeWalker(var3);
- var4.traverse(var1.getNode());
- }
- } else {
- this.diag("========= Parsing " + var2 + " ==========");
- this.pushTime(var2);
- this.m_parserLiaison.setDocumentHandler(var3);
- this.m_parserLiaison.parse(var1);
- if (this.m_diagnosticsPrintWriter != null) {
- this.displayDuration("Parse of " + var2, var2);
- }
- }
- } catch (Exception var5) {
- this.error(50, new Object[]{var2}, var5);
- }
-
- return this.m_stylesheetRoot;
- }
-
- public StylesheetRoot processStylesheet(String var1) throws SAXException {
- try {
- XSLTInputSource var2 = new XSLTInputSource(this.getURLFromString(var1, (String)null).toString());
- return this.processStylesheet(var2);
- } catch (SAXException var3) {
- this.error(78, (Exception)var3);
- return null;
- }
- }
-
- public void setStylesheet(StylesheetRoot var1) {
- this.m_stylesheetRoot = var1;
- }
-
- public StylesheetRoot getStylesheet() {
- return this.m_stylesheetRoot;
- }
-
- public String getOutputFileName() {
- return this.m_outputFileName;
- }
-
- public void setOutputFileName(String var1) {
- this.m_outputFileName = var1;
- }
-
- public URL getURLFromString(String var1, String var2) throws SAXException {
- return this.m_parserLiaison.getURLFromString(var1, var2);
- }
-
- public Node getSourceTreeFromInput(XSLTInputSource var1) throws SAXException {
- String var3 = var1 != null && ((InputSource)var1).getSystemId() != null ? ((InputSource)var1).getSystemId() : "Input XML";
- Object var2;
- if (var1.getNode() != null) {
- if (this.getXMLProcessorLiaison() instanceof DTMLiaison) {
- this.error(97);
- }
-
- var2 = var1.getNode();
- } else {
- try {
- this.diag("========= Parsing " + var3 + " ==========");
- this.pushTime(var3);
- this.m_parserLiaison.parse(var1);
- if (this.m_diagnosticsPrintWriter != null) {
- this.displayDuration("Parse of " + var3, var3);
- }
-
- var2 = this.m_parserLiaison.getDocument();
- } catch (Exception var5) {
- Exception var4 = var5;
- if (var5 instanceof SAXException && ((SAXException)var5).getException() != null) {
- var4 = ((SAXException)var5).getException();
- }
-
- var2 = null;
- this.error(50, new Object[]{var3}, var4);
- }
- }
-
- return (Node)var2;
- }
-
- public Document parseXML(URL var1, DocumentHandler var2, Document var3) throws SAXException, IOException {
- Object var4 = this.getSourceDocsTable().get(var1.toExternalForm());
- if (var4 != null) {
- return (Document)var4;
- } else {
- XSLTInputSource var6 = new XSLTInputSource(var1.toString());
- if (var2 != null) {
- this.m_parserLiaison.setDocumentHandler(var2);
- }
-
- this.m_parserLiaison.parse(var6);
- Document var5;
- if (var2 == null) {
- var5 = this.m_parserLiaison.getDocument();
- } else {
- var5 = var3;
- }
-
- return var5;
- }
- }
-
- public StylesheetSpec getAssociatedStylesheet(XSLTInputSource var1, String var2, String var3) throws SAXException {
- Vector var4 = this.getAssociatedStylesheets(var1, var2, var3);
- return var4 != null ? (StylesheetSpec)var4.elementAt(0) : null;
- }
-
- public Vector getAssociatedStylesheets(XSLTInputSource var1, String var2, String var3) throws SAXException {
- Vector var4 = null;
- Node var5 = this.getSourceTreeFromInput(var1);
-
- for(Node var6 = var5.getFirstChild(); var6 != null; var6 = var6.getNextSibling()) {
- if (var6.getNodeType() == 7) {
- ProcessingInstruction var7 = (ProcessingInstruction)var6;
- if (var7.getNodeName().equals("xml-stylesheet") || var7.getNodeName().equals("xml:stylesheet")) {
- String var8 = null;
- String var9 = null;
- String var10 = null;
- String var11 = null;
- String var12 = null;
- boolean var13 = false;
- StringTokenizer var14 = new StringTokenizer(var7.getNodeValue(), " \t=");
-
- while(var14.hasMoreTokens()) {
- String var15 = var14.nextToken();
- if (var15.equals("type")) {
- String var16 = var14.nextToken();
- var9 = var16.substring(1, var16.length() - 1);
- } else if (var15.equals("href")) {
- var8 = var14.nextToken();
- var8 = var8.substring(1, var8.length() - 1);
- } else if (var15.equals("title")) {
- var10 = var14.nextToken();
- var10 = var10.substring(1, var10.length() - 1);
- } else if (var15.equals("media")) {
- var11 = var14.nextToken();
- var11 = var11.substring(1, var11.length() - 1);
- } else if (var15.equals("charset")) {
- var12 = var14.nextToken();
- var12 = var12.substring(1, var12.length() - 1);
- } else if (var15.equals("alternate")) {
- String var22 = var14.nextToken();
- var13 = var22.substring(1, var22.length() - 1).equals("yes");
- }
- }
-
- if (var9 != null && var9.equals("text/xsl") && var8 != null && (var2 == null || var11 != null && var11.equals(var2)) && (var3 == null || var12 != null && var12.equals(var3))) {
- if (var4 == null) {
- var4 = new Vector();
- }
-
- StylesheetSpec var21 = new StylesheetSpec(var8, var9, var10, var11, var13, var12);
- if (!var13) {
- var4.insertElementAt(var21, 0);
- } else {
- var4.addElement(var21);
- }
- }
- }
- }
- }
-
- return var4;
- }
-
- Stylesheet getStylesheetFromPIURL(String var1, Node var2, String var3, boolean var4) throws SAXException, MalformedURLException, FileNotFoundException, IOException {
- Object var5 = null;
- String[] var6 = new String[]{null};
- var1 = var1.trim();
- int var7 = var1.indexOf(35);
- if (var7 == 0) {
- this.diag("Locating stylesheet from fragment identifier...");
- String var9 = var1.substring(1);
- PrefixResolver var10 = this.getExecContext().getNamespaceContext();
- XPathProcessorImpl var11 = new XPathProcessorImpl();
- XPath var12 = new XPath();
- var11.initXPath(var12, "id(" + var9 + ")", var10);
- XObject var13 = var12.execute(this.getExecContext(), var2, var10);
- NodeList var14 = var13.nodeset();
- if (var14.getLength() == 0) {
- var12 = new XPath();
- var11.initXPath(var12, "//*[@id='" + var9 + "']", var10);
- var13 = var12.execute(this.getExecContext(), var2, var10);
- var14 = var13.nodeset();
- if (var14.getLength() == 0) {
- var12 = new XPath();
- var11.initXPath(var12, "//*[@name='" + var9 + "']", var10);
- var13 = var12.execute(this.getExecContext(), var2, var10);
- var14 = var13.nodeset();
- if (var14.getLength() == 0) {
- var12 = new XPath();
- var11.initXPath(var12, var9, var10);
- var13 = var12.execute(this.getExecContext(), var2, var10);
- var14 = var13.nodeset();
- }
- }
- }
-
- if (var14.getLength() == 0) {
- this.error(51, (Object[])(new Object[]{var9}));
- }
-
- Node var15 = var14.item(0);
- if (var15.getNodeType() == 1) {
- this.pushTime(var15);
- if (var4) {
- this.m_stylesheetRoot = this.createStylesheetRoot(var6[0]);
- var5 = this.m_stylesheetRoot;
- } else {
- var5 = new Stylesheet(this.m_stylesheetRoot, this, var6[0]);
- }
-
- this.addTraceListenersToStylesheet();
- StylesheetHandler var16 = new StylesheetHandler(this, (Stylesheet)var5);
- TreeWalker var17 = new TreeWalker(var16);
- var17.traverse(var15);
- this.displayDuration("Setup of " + var1, var15);
- } else {
- Object var8 = null;
- this.error(52, (Object[])(new Object[]{var9}));
- }
- } else {
- this.diag(XSLMessages.createMessage(13, new Object[]{var1}));
- this.pushTime(var1);
- if (var4) {
- this.m_stylesheetRoot = this.createStylesheetRoot(var1);
- var5 = this.m_stylesheetRoot;
- } else {
- var5 = new Stylesheet(this.m_stylesheetRoot, this, var1);
- }
-
- this.addTraceListenersToStylesheet();
- StylesheetHandler var19 = new StylesheetHandler(this, (Stylesheet)var5);
- URL var20 = this.getURLFromString(var1, var3);
- XSLTInputSource var21 = new XSLTInputSource(var20.toString());
- this.m_parserLiaison.setDocumentHandler(var19);
- this.m_parserLiaison.parse(var21);
- this.displayDuration("Parsing and init of " + var1, var1);
- }
-
- return (Stylesheet)var5;
- }
-
- public String findURIFromDoc(Document var1) {
- return this.m_parserLiaison.findURIFromDoc(var1);
- }
-
- public Hashtable getSourceDocsTable() {
- return this.m_parserLiaison.getSourceDocsTable();
- }
-
- public void setSourceDocument(String var1, Document var2) {
- this.m_parserLiaison.getSourceDocsTable().put(var1, var2);
- }
-
- public void outputToResultTree(Stylesheet var1, Object var2) throws SAXException, MalformedURLException, FileNotFoundException, IOException {
- Object var3;
- if (var2 instanceof XObject) {
- var3 = (XObject)var2;
- } else if (var2 instanceof String) {
- var3 = new XString((String)var2);
- } else if (var2 instanceof Boolean) {
- var3 = new XBoolean((Boolean)var2);
- } else if (var2 instanceof Double) {
- var3 = new XNumber((Double)var2);
- } else if (var2 instanceof DocumentFragment) {
- var3 = new XRTreeFrag((DocumentFragment)var2);
- } else if (var2 instanceof Node) {
- var3 = new XNodeSet((Node)var2);
- } else if (var2 instanceof NodeList) {
- var3 = new XNodeSet((NodeList)var2);
- } else {
- var3 = new XString(var2.toString());
- }
-
- int var4 = ((XObject)var3).getType();
- switch (var4) {
- case 1:
- case 2:
- case 3:
- String var5 = ((XObject)var3).str();
- this.m_resultTreeHandler.characters(var5.toCharArray(), 0, var5.length());
- return;
- case 4:
- NodeList var6 = ((XObject)var3).nodeset();
- int var7 = var6.getLength();
-
- for(int var8 = 0; var8 < var7; ++var8) {
- Node var9 = var6.item(var8);
-
- Node var11;
- for(Node var10 = var9; var9 != null; var9 = var11) {
- this.flushPending();
- this.cloneToResultTree(var1, var9, false, false, true);
- var11 = var9.getFirstChild();
-
- while(var11 == null) {
- if (var9.getNodeType() == 1) {
- this.m_resultTreeHandler.endElement(var9.getNodeName());
- }
-
- if (var10 == var9) {
- break;
- }
-
- var11 = var9.getNextSibling();
- if (var11 == null) {
- var9 = var9.getParentNode();
- if (var10 == var9) {
- if (var9.getNodeType() == 1) {
- this.m_resultTreeHandler.endElement(var9.getNodeName());
- }
-
- var11 = null;
- break;
- }
- }
- }
- }
- }
-
- return;
- case 5:
- this.outputResultTreeFragment((XObject)var3, this.m_parserLiaison);
- return;
- default:
- }
- }
-
- public boolean functionAvailable(String var1, String var2) {
- return this.m_parserLiaison.functionAvailable(var1, var2);
- }
-
- public boolean elementAvailable(String var1, String var2) {
- return this.m_parserLiaison.elementAvailable(var1, var2);
- }
-
- public Object extFunction(String var1, String var2, Vector var3, Object var4) throws SAXException {
- return this.m_parserLiaison.extFunction(var1, var2, var3, var4);
- }
-
- public void addTraceListener(TraceListener var1) throws TooManyListenersException {
- if (this.m_traceListeners == null) {
- this.m_traceListeners = new Vector();
- }
-
- this.m_traceListeners.addElement(var1);
- if (this.m_stylesheetRoot != null) {
- this.m_stylesheetRoot.addTraceListener(var1);
- }
-
- }
-
- void addTraceListenersToStylesheet() throws SAXException {
- try {
- if (this.m_traceListeners != null) {
- int var1 = this.m_traceListeners.size();
-
- for(int var2 = 0; var2 < var1; ++var2) {
- TraceListener var3 = (TraceListener)this.m_traceListeners.elementAt(var2);
- if (this.m_stylesheetRoot != null) {
- this.m_stylesheetRoot.addTraceListener(var3);
- }
- }
-
- }
- } catch (TooManyListenersException var4) {
- throw new SAXException(XSLMessages.createMessage(103, (Object[])null), var4);
- }
- }
-
- public void removeTraceListener(TraceListener var1) {
- if (this.m_traceListeners != null) {
- this.m_traceListeners.removeElement(var1);
- }
-
- if (this.m_stylesheetRoot != null) {
- this.m_stylesheetRoot.removeTraceListener(var1);
- }
-
- }
-
- void fireGenerateEvent(GenerateEvent var1) {
- if (this.m_traceListeners != null) {
- int var2 = this.m_traceListeners.size();
-
- for(int var3 = 0; var3 < var2; ++var3) {
- TraceListener var4 = (TraceListener)this.m_traceListeners.elementAt(var3);
- var4.generated(var1);
- }
- }
-
- }
-
- public void message(String var1) throws SAXException {
- this.message((Node)null, (Node)null, var1);
- }
-
- public void message(Node var1, Node var2, String var3) throws SAXException {
- boolean var4 = this.getProblemListener().message(var3);
- if (var4) {
- throw new XSLProcessorException(var3);
- }
- }
-
- public void warn(int var1) throws SAXException {
- this.warn((Node)null, (Node)null, var1, (Object[])null);
- }
-
- public void warn(int var1, Object[] var2) throws SAXException {
- this.warn((Node)null, (Node)null, var1, var2);
- }
-
- public void warn(Node var1, Node var2, int var3) throws SAXException {
- this.warn(var1, var2, var3, (Object[])null);
- }
-
- public void warn(Node var1, Node var2, int var3, Object[] var4) throws SAXException {
- String var5 = XSLMessages.createWarning(var3, var4);
- Locator var6 = this.m_stylesheetLocatorStack.isEmpty() ? null : (Locator)this.m_stylesheetLocatorStack.peek();
- String var7 = var6 == null ? null : (var6.getSystemId() == null ? var6.getPublicId() : var6.getSystemId());
- boolean var8 = this.getProblemListener().problem((short)2, (short)1, var1, var2, var5, var7, var6 == null ? 0 : var6.getLineNumber(), var6 == null ? 0 : var6.getColumnNumber());
- if (var8) {
- throw new XSLProcessorException(var5);
- }
- }
-
- public void error(String var1) throws SAXException {
- Locator var2 = this.m_stylesheetLocatorStack.isEmpty() ? null : (Locator)this.m_stylesheetLocatorStack.peek();
- String var3 = var2 == null ? null : (var2.getSystemId() == null ? var2.getPublicId() : var2.getSystemId());
- boolean var4 = this.getProblemListener().problem((short)2, (short)2, (Object)null, (Node)null, var1, var3, var2 == null ? 0 : var2.getLineNumber(), var2 == null ? 0 : var2.getColumnNumber());
- if (var4) {
- throw new XSLProcessorException("");
- }
- }
-
- public void error(int var1) throws SAXException {
- this.error((Node)null, (Node)null, var1, (Object[])null);
- }
-
- public void error(int var1, Object[] var2) throws SAXException {
- this.error((Node)null, (Node)null, var1, var2);
- }
-
- public void error(int var1, Exception var2) throws SAXException {
- this.error(var1, (Object[])null, var2);
- }
-
- public void error(int var1, Object[] var2, Exception var3) throws SAXException {
- String var4 = XSLMessages.createMessage(var1, var2);
- Locator var5 = this.m_stylesheetLocatorStack.isEmpty() ? null : (Locator)this.m_stylesheetLocatorStack.peek();
- String var6 = var5 == null ? null : (var5.getSystemId() == null ? var5.getPublicId() : var5.getSystemId());
- boolean var7 = this.getProblemListener().problem((short)2, (short)2, (Object)null, (Node)null, var4, var6, var5 == null ? 0 : var5.getLineNumber(), var5 == null ? 0 : var5.getColumnNumber());
- if (var7) {
- if (var3 instanceof XSLProcessorException) {
- throw (XSLProcessorException)var3;
- } else {
- throw new XSLProcessorException(var4, var3);
- }
- }
- }
-
- public void error(Node var1, Node var2, int var3) throws SAXException {
- this.error(var1, var2, var3, (Object[])null);
- }
-
- public void error(Node var1, Node var2, int var3, Object[] var4) throws SAXException {
- String var5 = XSLMessages.createMessage(var3, var4);
- Locator var6 = this.m_stylesheetLocatorStack.isEmpty() ? null : (Locator)this.m_stylesheetLocatorStack.peek();
- String var7 = var6 == null ? null : (var6.getSystemId() == null ? var6.getPublicId() : var6.getSystemId());
- boolean var8 = this.getProblemListener().problem((short)2, (short)2, var1, var2, var5, var7, var6 == null ? 0 : var6.getLineNumber(), var6 == null ? 0 : var6.getColumnNumber());
- if (var8) {
- throw new XSLProcessorException("");
- }
- }
-
- void pushTime(Object var1) {
- if (var1 != null) {
- this.m_durationsTable.put(var1, new Date());
- }
-
- }
-
- long popDuration(Object var1) {
- long var2 = 0L;
- if (var1 != null) {
- Date var4 = (Date)this.m_durationsTable.get(var1);
- Date var5 = new Date();
- var2 = var5.getTime() - var4.getTime();
- this.m_durationsTable.remove(var1);
- }
-
- return var2;
- }
-
- protected void displayDuration(String var1, Object var2) {
- long var3 = 0L;
- if (var2 != null) {
- Date var5 = (Date)this.m_durationsTable.get(var2);
- Date var6 = new Date();
- var3 = var6.getTime() - var5.getTime();
- if (this.m_diagnosticsPrintWriter != null) {
- this.m_diagnosticsPrintWriter.println(var1 + " took " + var3 + " milliseconds");
- }
-
- this.m_durationsTable.remove(var2);
- }
-
- }
-
- public void setDiagnosticsOutput(OutputStream var1) {
- this.setDiagnosticsOutput(new PrintWriter(var1));
- }
-
- public void setDiagnosticsOutput(PrintWriter var1) {
- this.m_diagnosticsPrintWriter = var1;
- if (this.getProblemListener() instanceof ProblemListenerDefault) {
- ((ProblemListenerDefault)this.getProblemListener()).setDiagnosticsOutput(var1);
- }
-
- }
-
- protected void diag(String var1) {
- if (this.m_diagnosticsPrintWriter != null) {
- this.m_diagnosticsPrintWriter.println(var1);
- }
-
- }
-
- public void setTraceTemplates(boolean var1) {
- this.m_traceTemplates = var1;
- }
-
- public void setTraceSelect(boolean var1) {
- this.m_traceSelects = var1;
- }
-
- public void setTraceTemplateChildren(boolean var1) {
- this.m_traceTemplateChildren = var1;
- }
-
- public void setQuietConflictWarnings(boolean var1) {
- this.m_quietConflictWarnings = var1;
- }
-
- protected void traceSelect(Element var1, NodeList var2) throws SAXException {
- String var3 = var1.getNodeName() + ": ";
- Attr var4 = var1.getAttributeNode("select");
- if (var4 != null) {
- var3 = var3 + var4.getValue() + ", " + (var2 != null ? var2.getLength() : 0) + " selected";
- } else {
- var3 = var3 + "*|text(), (default select), " + var2.getLength() + " selected";
- }
-
- var4 = var1.getAttributeNode("mode");
- if (var4 != null) {
- var3 = var3 + ", mode = " + var4.getValue();
- }
-
- System.out.println(var3);
- }
-
- protected void traceTemplate(Node var1) throws SAXException {
- if (var1.getNodeType() == 1) {
- Element var2 = (Element)var1;
- Attr var4 = var2.getAttributeNode("match");
- String var3;
- if (var4 != null) {
- var3 = "Calling template for: " + var4.getValue();
- } else {
- var4 = var2.getAttributeNode("name");
- if (var4 != null) {
- var3 = "Calling named template, name = " + var4.getValue();
- } else {
- int var5 = ((ElemTemplateElement)var2).getXSLToken();
- if (var5 == 28) {
- var4 = var2.getAttributeNode("select");
- if (var4 != null) {
- var3 = "Processing for-each, select = " + var4.getValue();
- } else {
- this.error(53);
- var3 = null;
- }
- } else {
- this.error(54);
- var3 = null;
- }
- }
- }
-
- var4 = var2.getAttributeNode("mode");
- if (var4 != null) {
- var3 = var3 + ", mode = " + var4.getValue();
- }
-
- System.out.println(var3);
- }
-
- }
-
- protected void diagnoseTemplateChildren(Node var1, Node var2) {
- if (this.m_traceTemplateChildren) {
- String var3 = var1.getNodeName();
- String var4 = var2.getNodeName();
- this.diag("source node: " + var4 + ", template-node: " + var3);
- }
-
- }
-
- protected void cloneToResultTree(Stylesheet var1, Node var2, boolean var3, boolean var4, boolean var5) throws SAXException, MalformedURLException, FileNotFoundException, IOException {
- boolean var6 = false;
- switch (var2.getNodeType()) {
- case 1:
- if (var5) {
- this.copyAttributesToAttList((Element)var2, this.m_stylesheetRoot, this.m_pendingAttributes);
- this.copySourceNSAttrs(var2, this.m_pendingAttributes);
- }
-
- this.m_resultTreeHandler.startElement(var2.getNodeName());
- return;
- case 2:
- this.addResultAttribute(this.m_pendingAttributes, ((Attr)var2).getName(), ((Attr)var2).getValue());
- return;
- case 3:
- if (!var4) {
- var6 = false;
- }
-
- Text var12 = (Text)var2;
- String var8 = null;
- if (var6) {
- if (!this.m_parserLiaison.isIgnorableWhitespace(var12)) {
- var8 = this.getNormalizedText(var12);
- if (var8 != null && this.isWhiteSpace(var8)) {
- var8 = null;
- }
- }
- } else {
- Node var9 = var2.getParentNode();
- if (var9 != null) {
- if (var9.getNodeType() != 9) {
- var8 = this.getNormalizedText(var12);
- if (var8 != null && var8.length() == 0) {
- var8 = null;
- }
- }
- } else {
- var8 = this.getNormalizedText(var12);
- if (var8 != null && var8.length() == 0) {
- var8 = null;
- }
- }
- }
-
- if (var8 != null) {
- if (this.m_parserLiaison.isIgnorableWhitespace(var12)) {
- this.m_resultTreeHandler.ignorableWhitespace(var8.toCharArray(), 0, var8.length());
- return;
- }
-
- this.m_resultTreeHandler.characters(var8.toCharArray(), 0, var8.length());
- return;
- }
- break;
- case 4:
- String var11 = ((CDATASection)var2).getData();
- this.m_resultTreeHandler.cdata(var11.toCharArray(), 0, var11.length());
- return;
- case 5:
- EntityReference var10 = (EntityReference)var2;
- this.m_resultTreeHandler.entityReference(var10.getNodeName());
- return;
- case 6:
- case 10:
- default:
- this.error(56, (Object[])(new Object[]{var2.getNodeName()}));
- break;
- case 7:
- ProcessingInstruction var7 = (ProcessingInstruction)var2;
- this.m_resultTreeHandler.processingInstruction(var7.getTarget(), var7.getData());
- return;
- case 8:
- this.m_resultTreeHandler.comment(((Comment)var2).getData());
- return;
- case 9:
- break;
- case 11:
- this.error((Node)null, var2, 55);
- return;
- }
-
- }
-
- DocumentFragment createResultTreeFrag(Stylesheet var1, ElemTemplateElement var2, Node var3, Node var4, QName var5) throws SAXException, MalformedURLException, FileNotFoundException, IOException {
- DocumentFragment var6 = this.createDocFrag();
- DocumentHandler var7 = this.m_flistener;
- boolean var8 = this.m_mustFlushStartDoc;
- boolean var9 = this.m_pendingStartDoc;
- String var10 = this.m_pendingElementName;
- this.m_pendingElementName = null;
- MutableAttrListImpl var11 = this.m_pendingAttributes;
- this.m_pendingAttributes = new MutableAttrListImpl();
- this.m_flistener = new FormatterToDOM(this.getDOMFactory(), var6);
- var2.executeChildren(this, var3, var4, var5);
- this.m_pendingElementName = var10;
- this.m_pendingAttributes = var11;
- this.m_mustFlushStartDoc = var8;
- this.m_pendingStartDoc = var9;
- this.m_flistener = var7;
- return var6;
- }
-
- public void writeChildren(DocumentHandler var1, Stylesheet var2, ElemTemplateElement var3, Node var4, Node var5, QName var6) throws SAXException, MalformedURLException, FileNotFoundException, IOException {
- this.flushPending();
- DocumentHandler var7 = this.m_flistener;
- String var8 = this.m_pendingElementName;
- this.m_pendingElementName = null;
- MutableAttrListImpl var9 = this.m_pendingAttributes;
- this.m_pendingAttributes = new MutableAttrListImpl();
- this.m_flistener = var1;
- var3.executeChildren(this, var4, var5, var6);
- this.flushPending();
- this.m_flistener = var7;
- this.m_pendingElementName = var8;
- this.m_pendingAttributes = var9;
- }
-
- public void outputResultTreeFragment(XObject var1, XPathSupport var2) throws SAXException, MalformedURLException, FileNotFoundException, IOException {
- DocumentFragment var3 = var1.rtree(var2);
- NodeList var4 = var3.getChildNodes();
- int var5 = var4.getLength();
- TreeWalker var6 = new TreeWalker(this.m_flistener);
-
- for(int var7 = 0; var7 < var5; ++var7) {
- this.flushPending();
- var6.traverse(var4.item(var7));
- }
-
- }
-
- boolean isCDataResultElem(String var1) {
- boolean var2 = false;
- QName[] var3 = this.m_stylesheetRoot.m_cdataSectionElems;
- if (var3 != null) {
- String var4 = null;
- Object var5 = null;
- int var6 = var1.indexOf(58);
- if (var6 > 0) {
- String var7 = var1.substring(0, var6);
- if (var7.equals("xml")) {
- var4 = "http://www.w3.org/XML/1998/namespace";
- } else {
- var4 = this.getResultNamespaceForPrefix(var7);
- }
-
- if (var4 == null) {
- throw new RuntimeException(XSLMessages.createMessage(99, new Object[]{var7}));
- }
- }
-
- String var10 = var6 < 0 ? var1 : var1.substring(var6 + 1);
-
- for(QName var9 : var3) {
- var2 = var9.equals(var4, var10);
- if (var2) {
- break;
- }
- }
- }
-
- return var2;
- }
-
- boolean qnameEqualsResultElemName(QName var1, String var2) {
- String var3 = null;
- Object var4 = null;
- int var5 = var2.indexOf(58);
- if (var5 > 0) {
- String var6 = var2.substring(0, var5);
- if (var6.equals("xml")) {
- var3 = "http://www.w3.org/XML/1998/namespace";
- } else {
- var3 = this.getResultNamespaceForPrefix(var6);
- }
-
- if (var3 == null) {
- throw new RuntimeException(XSLMessages.createMessage(99, new Object[]{var6}));
- }
- }
-
- String var7 = var5 < 0 ? var2 : var2.substring(var5 + 1);
- return var1.equals(var3, var7);
- }
-
- String getResultNamespaceForPrefix(String var1) {
- String var2 = null;
- int var3 = this.m_resultNameSpaces.size();
-
- for(int var4 = var3 - 1; var4 >= 0 && var2 == null; --var4) {
- ResultNameSpace var5 = (ResultNameSpace)this.m_resultNameSpaces.elementAt(var4);
- if (m_emptyNamespace != var5) {
- while(var5 != null) {
- if (var5.m_prefix.equals(var1)) {
- var2 = var5.m_uri;
- break;
- }
-
- var5 = var5.m_next;
- }
- }
- }
-
- return var2;
- }
-
- String getResultPrefixForNamespace(String var1) {
- String var2 = null;
- int var3 = this.m_resultNameSpaces.size();
-
- for(int var4 = var3 - 1; var4 >= 0 && var2 == null; --var4) {
- ResultNameSpace var5 = (ResultNameSpace)this.m_resultNameSpaces.elementAt(var4);
- if (m_emptyNamespace != var5) {
- while(var5 != null) {
- if (var5.m_uri.equals(var1)) {
- var2 = var5.m_prefix;
- break;
- }
-
- var5 = var5.m_next;
- }
- }
- }
-
- return var2;
- }
-
- private String getPrefixForNamespace(String var1, Element var2) {
- Object var4 = var2;
-
- short var3;
- String var5;
- for(var5 = null; var4 != null && var5 == null && ((var3 = ((Node)var4).getNodeType()) == 1 || var3 == 5); var4 = this.m_parserLiaison.getParentOfNode((Node)var4)) {
- if (var3 == 1) {
- NamedNodeMap var6 = ((Node)var4).getAttributes();
-
- for(int var7 = 0; var7 < var6.getLength(); ++var7) {
- Node var8 = var6.item(var7);
- String var9 = var8.getNodeName();
- boolean var10 = var9.startsWith("xmlns:");
- if (var10 || var9.equals("xmlns")) {
- int var11 = var9.indexOf(58);
- String var12 = var8.getNodeValue();
- if (var12 != null && var12.equals(var1)) {
- var5 = var10 ? var9.substring(var11 + 1) : "";
- }
- }
- }
- }
- }
-
- return var5;
- }
-
- void copySourceNSAttrs(Node var1, MutableAttrListImpl var2) {
- short var3;
- for(Node var4 = var1; var4 != null && ((var3 = var4.getNodeType()) == 1 || var3 == 5); var4 = var4.getParentNode()) {
- if (var3 == 1) {
- NamedNodeMap var5 = var4.getAttributes();
- int var6 = var5.getLength();
-
- for(int var7 = 0; var7 < var6; ++var7) {
- Node var8 = var5.item(var7);
- String var9 = var8.getNodeName();
- boolean var10 = var9.startsWith("xmlns:");
- if (var10 || var9.equals("xmlns")) {
- String var11 = var10 ? var9.substring(6) : "";
- String var12 = this.getResultNamespaceForPrefix(var11);
- String var13 = var8.getNodeValue();
- if (!var13.equalsIgnoreCase(var12)) {
- this.addResultAttribute(this.m_pendingAttributes, var9, var13);
- }
- }
- }
- }
- }
-
- }
-
- static final String getAttrVal(Element var0, String var1, Node var2) {
- Attr var3 = var0.getAttributeNode(var1);
- return var3 == null ? null : var3.getValue();
- }
-
- static final String getAttrVal(Element var0, String var1) {
- Attr var2 = var0.getAttributeNode(var1);
- return var2 == null ? null : var2.getValue();
- }
-
- protected void copyAttributeToTarget(Attr var1, Node var2, Stylesheet var3, MutableAttrListImpl var4, Element var5) throws SAXException, MalformedURLException, FileNotFoundException, IOException {
- String var6 = var1.getName().trim();
- String var7 = var1.getValue();
- if (var7 != null) {
- if ((var6.equals("xmlns") || var6.startsWith("xmlns:")) && var7.startsWith("quote:")) {
- var7 = var7.substring(6);
- }
-
- this.addResultAttribute(var4, var6, var7);
- }
-
- }
-
- protected void copyAttributesToAttList(Element var1, Stylesheet var2, MutableAttrListImpl var3) throws SAXException, MalformedURLException, FileNotFoundException, IOException {
- NamedNodeMap var4 = var1.getAttributes();
- int var5 = var4 != null ? var4.getLength() : 0;
- Object var6 = null;
-
- for(int var7 = 0; var7 < var5; ++var7) {
- Attr var8 = (Attr)var4.item(var7);
- if (this.m_parserLiaison.getExpandedAttributeName(var8).equals(this.m_stylesheetRoot.m_XSLNameSpaceURL + ":use")) {
- String var9 = var8.getValue();
- } else {
- this.copyAttributeToTarget(var8, var1, var2, var3, var1);
- }
- }
-
- }
-
- public boolean shouldStripSourceNode(Node var1) throws SAXException {
- if (this.m_stylesheetRoot != null && (this.m_stylesheetRoot.m_whitespacePreservingElements != null || this.m_stylesheetRoot.m_whitespaceStrippingElements != null)) {
- boolean var2 = false;
- short var3 = var1.getNodeType();
- if (var3 == 3 || var3 == 4) {
- if (!this.m_parserLiaison.isIgnorableWhitespace((Text)var1)) {
- String var4 = ((Text)var1).getData();
- if (var4 == null) {
- return true;
- }
-
- if (!this.isWhiteSpace(var4)) {
- return false;
- }
- }
-
- for(Node var14 = this.m_parserLiaison.getParentOfNode(var1); var14 != null; var14 = var14.getParentNode()) {
- if (var14.getNodeType() == 1) {
- Element var10000 = (Element)var14;
- double var5 = Double.NEGATIVE_INFINITY;
- double var7 = Double.NEGATIVE_INFINITY;
- if (this.m_stylesheetRoot != null) {
- if (this.m_stylesheetRoot.m_whitespacePreservingElements != null) {
- int var9 = this.m_stylesheetRoot.m_whitespacePreservingElements.size();
-
- for(int var10 = 0; var10 < var9; ++var10) {
- XPath var11 = (XPath)this.m_stylesheetRoot.m_whitespacePreservingElements.elementAt(var10);
- double var12 = var11.getMatchScore(this.getExecContext(), var14);
- if (var12 > var5) {
- var5 = var12;
- }
- }
- }
-
- if (this.m_stylesheetRoot.m_whitespaceStrippingElements != null) {
- int var15 = this.m_stylesheetRoot.m_whitespaceStrippingElements.size();
-
- for(int var16 = 0; var16 < var15; ++var16) {
- XPath var17 = (XPath)this.m_stylesheetRoot.m_whitespaceStrippingElements.elementAt(var16);
- double var18 = var17.getMatchScore(this.getExecContext(), var14);
- if (var18 > var7) {
- var7 = var18;
- }
- }
- }
- }
-
- if (var5 > Double.NEGATIVE_INFINITY || var7 > Double.NEGATIVE_INFINITY) {
- if (var5 > var7) {
- var2 = false;
- } else if (var7 > var5) {
- var2 = true;
- } else {
- this.warn(15);
- }
- break;
- }
- }
- }
- }
-
- return var2;
- } else {
- return false;
- }
- }
-
- static boolean isSpace(char var0) {
- return var0 == ' ' || var0 == '\t' || var0 == '\r' || var0 == '\n';
- }
-
- boolean isWhiteSpace(String var1) {
- int var2 = var1.length();
-
- for(int var3 = 0; var3 < var2; ++var3) {
- if (!isSpace(var1.charAt(var3))) {
- return false;
- }
- }
-
- return true;
- }
-
- String fixWhiteSpace(String var1, boolean var2, boolean var3, boolean var4) {
- char[] var5 = var1.toCharArray();
- int var6 = var5.length;
- boolean var7 = false;
-
- int var8;
- for(var8 = 0; var8 < var6 && !isSpace(var5[var8]); ++var8) {
- }
-
- int var9 = var8;
-
- for(boolean var10 = false; var8 < var6; ++var8) {
- char var11 = var5[var8];
- if (isSpace(var11)) {
- if (!var10) {
- if (var11 != ' ') {
- var7 = true;
- }
-
- var5[var9++] = ' ';
- if (var4 && var8 != 0) {
- char var12 = var5[var8 - 1];
- if (var12 != '.' && var12 != '!' && var12 != '?') {
- var10 = true;
- }
- } else {
- var10 = true;
- }
- } else {
- var7 = true;
- var10 = true;
- }
- } else {
- var5[var9++] = var11;
- var10 = false;
- }
- }
-
- if (var3 && var9 >= 1 && var5[var9 - 1] == ' ') {
- var7 = true;
- --var9;
- }
-
- int var13 = 0;
- if (var2 && var9 > 0 && var5[0] == ' ') {
- var7 = true;
- ++var13;
- }
-
- if (var7) {
- return new String(var5, var13, var9 - var13);
- } else {
- return var1;
- }
- }
-
- String trim(String var1) {
- char[] var2 = var1.toCharArray();
- int var3 = var2.length;
- boolean var4 = false;
- int var5 = 0;
- int var6 = 0;
- if (var3 > 0) {
- for(var5 = 0; var5 < var3 && isSpace(var2[var5]); ++var5) {
- }
-
- for(var6 = var3; var6 > var5 && isSpace(var2[var6 - 1]); --var6) {
- }
-
- var4 = var5 > 0 || var6 < var3;
- }
-
- return var4 ? new String(var2, var5, var6 - var5) : var1;
- }
-
- int trimLen(String var1) {
- char[] var2 = var1.toCharArray();
- int var3 = var2.length;
-
- int var4;
- for(var4 = 0; var4 < var3 && isSpace(var2[var4]); ++var4) {
- }
-
- int var5;
- for(var5 = var3; var5 > var4 && isSpace(var2[var5 - 1]); --var5) {
- }
-
- return var5 - var4;
- }
-
- String getNormalizedText(Text var1) {
- return var1.getData();
- }
-
- public XPathSupport getExecContext() {
- return this.m_parserLiaison;
- }
-
- public void setExecContext(XMLParserLiaison var1) {
- this.m_parserLiaison = var1;
- var1.setEnvSupport(this);
- }
-
- public XMLParserLiaison getXMLProcessorLiaison() {
- return this.m_parserLiaison;
- }
-
- public XString createXString(String var1) {
- return new XString(var1);
- }
-
- public XObject createXObject(Object var1) {
- return new XObject(var1);
- }
-
- public XNumber createXNumber(double var1) {
- return new XNumber(var1);
- }
-
- public XBoolean createXBoolean(boolean var1) {
- return new XBoolean(var1);
- }
-
- public XNodeSet createXNodeSet(NodeList var1) {
- return new XNodeSet(var1);
- }
-
- public XNodeSet createXNodeSet(Node var1) {
- return new XNodeSet(var1);
- }
-
- public XNull createXNull() {
- return new XNull();
- }
-
- public NodeList getNodeSetByKey(Node var1, String var2, String var3, PrefixResolver var4) throws SAXException {
- NodeList var5 = this.m_stylesheetRoot.getNodeSetByKey(this, var1, var2, var3, var4);
- if (var5 == null) {
- this.error(58, (Object[])(new Object[]{var2}));
- }
-
- return var5;
- }
-
- Element getElementByID(String var1, Document var2) {
- return this.m_parserLiaison.getElementByID(var1, var2);
- }
-
- public XObject getVariable(QName var1) throws SAXException {
- Object var2 = this.getVarStack().getVariable(var1);
- if (var2 != null && !(var2 instanceof XObject)) {
- var2 = new XObject(var2);
- }
-
- return (XObject)var2;
- }
-
- public XLocator getXLocatorFromNode(Node var1) {
- return this.m_parserLiaison.getXLocatorFromNode(var1);
- }
-
- public void associateXLocatorToNode(Node var1, XLocator var2) {
- this.m_parserLiaison.associateXLocatorToNode(var1, var2);
- }
-
- DocumentFragment createDocFrag() {
- return new ResultTreeFrag(this.getDOMFactory(), this.m_parserLiaison);
- }
-
- /** @deprecated */
- public String getStyleSheetURIfromDoc(Node var1) {
- String var2 = null;
-
- for(Node var3 = var1.getFirstChild(); var3 != null; var3 = var3.getNextSibling()) {
- if (var3.getNodeType() == 7) {
- ProcessingInstruction var4 = (ProcessingInstruction)var3;
- if (var4.getNodeName().equals("xml-stylesheet") || var4.getNodeName().equals("xml:stylesheet")) {
- boolean var5 = true;
- StringTokenizer var6 = new StringTokenizer(var4.getNodeValue(), " \t=");
-
- while(var6.hasMoreTokens()) {
- if (var6.nextToken().equals("type")) {
- String var7 = var6.nextToken();
- var7 = var7.substring(1, var7.length() - 1);
- if (!var7.equals("text/xsl")) {
- var5 = false;
- }
- }
- }
-
- if (var5) {
- var6 = new StringTokenizer(var4.getNodeValue(), " \t=");
-
- while(var6.hasMoreTokens()) {
- if (var6.nextToken().equals("href")) {
- var2 = var6.nextToken();
- var2 = var2.substring(1, var2.length() - 1);
- }
- }
- break;
- }
- }
- }
- }
-
- return var2;
- }
-
- public void setStylesheetParam(String var1, String var2) {
- QName var3 = new QName(var1, this.m_parserLiaison.getNamespaceContext());
- this.m_topLevelParams.addElement(new Arg(var3, var2, true));
- }
-
- public void setStylesheetParam(String var1, XObject var2) {
- QName var3 = new QName(var1, this.m_parserLiaison.getNamespaceContext());
- this.m_topLevelParams.addElement(new Arg(var3, var2));
- }
-
- void resolveTopLevelParams() throws SAXException, MalformedURLException, FileNotFoundException, IOException, SAXException {
- this.m_stylesheetRoot.pushTopLevelVariables(this.m_topLevelParams, this);
- this.getVarStack().markGlobalStackFrame();
- }
-
- public Node getSourceNode() {
- return this.m_currentNode;
- }
-
- public Node getSourceNode(String var1, PrefixResolver var2) throws SAXException, MalformedURLException, FileNotFoundException, IOException {
- XObject var3 = this.m_stylesheetRoot.evalXPathStr(this.getExecContext(), var1, this.m_currentNode, var2);
- NodeList var4 = var3.nodeset();
- return var4 != null && var4.getLength() > 0 ? var4.item(0) : null;
- }
-
- protected final void resetCurrentState(Node var1) {
- this.m_currentNode = var1;
- }
-
- protected Element findElementByAttribute(Node var1, String var2, String var3, String var4) {
- Element var5 = null;
- String var6 = var1.getNodeName();
- if (var2 == null || var6.equals(var2)) {
- NamedNodeMap var7 = var1.getAttributes();
-
- try {
- int var8 = var7 != null ? var7.getLength() : 0;
-
- for(int var9 = 0; var9 < var8; ++var9) {
- Attr var10 = (Attr)var7.item(var9);
- String var11 = var10.getName();
- if (var11 != null && var11.equals(var3)) {
- String var12 = var10.getValue();
- if (var12.equals(var4)) {
- var5 = (Element)var1;
- break;
- }
- }
- }
- } catch (DOMException var13) {
- }
- }
-
- if (var5 == null) {
- for(Node var14 = var1.getFirstChild(); var14 != null; var14 = var14.getNextSibling()) {
- if (var14.getNodeType() == 1) {
- String var15 = var14.getNodeName();
- if (var15 != null) {
- var5 = this.findElementByAttribute(var14, var2, var3, var4);
- if (var5 != null) {
- break;
- }
- }
- }
- }
- }
-
- return var5;
- }
-
- URL getURLFromString(String var1) throws MalformedURLException {
- Object var2 = null;
-
- try {
- var7 = new URL(var1);
- } catch (MalformedURLException var6) {
- try {
- String var3 = (new File(var1)).getAbsolutePath();
- String var4 = "file:" + var3;
- var7 = new URL(var4);
- } catch (MalformedURLException var5) {
- this.diag(XSLMessages.createMessage(59, new Object[]{var1}));
- throw var5;
- }
- }
-
- return var7;
- }
-
- public DocumentHandler getDocumentHandler() {
- return this.m_flistener;
- }
-
- public void setDocumentHandler(DocumentHandler var1) {
- this.m_flistener = var1;
- }
-
- public DocumentHandler getFormatterListener() {
- return this.m_flistener;
- }
-
- public void setFormatterListener(DocumentHandler var1) {
- this.m_flistener = var1;
- }
-
- public void setDOMFactory(Document var1) {
- this.getXMLProcessorLiaison().setDOMFactory(var1);
- }
-
- public Document getDOMFactory() {
- return this.getXMLProcessorLiaison().getDOMFactory();
- }
-
- public void setProblemListener(ProblemListener var1) {
- this.m_parserLiaison.setProblemListener(var1);
- }
-
- public ProblemListener getProblemListener() {
- return this.m_parserLiaison.getProblemListener();
- }
-
- public void setOutputStream(OutputStream var1) {
- this.m_outputStream = var1;
- }
-
- public void setDocumentLocator(Locator var1) {
- }
-
- public void startDocument() throws SAXException {
- ErrorHandler var1 = this.m_parserLiaison.getErrorHandler();
- XercesLiaison var2 = new XercesLiaison(var1);
- var2.copyFromOtherLiaison((XMLParserLiaisonDefault)this.m_parserLiaison);
- this.setExecContext(var2);
- Document var3 = this.m_parserLiaison.createDocument();
- this.m_sourceTreeHandler = new FormatterToDOM(var3);
- this.resetCurrentState(var3);
- this.m_rootDoc = var3;
-
- try {
- this.getVarStack().pushContextMarker();
- this.resolveTopLevelParams();
- } catch (Exception var5) {
- throw new SAXException(((Throwable)var5).getMessage(), var5);
- }
-
- this.m_sourceTreeHandler.startDocument();
- }
-
- public void endDocument() throws SAXException {
- this.m_sourceTreeHandler.endDocument();
-
- try {
- XSLTResultTarget var1 = this.m_outputStream == null ? new XSLTResultTarget(this.m_flistener) : new XSLTResultTarget(this.m_outputStream);
- this.m_stylesheetRoot.process(this, this.m_sourceTreeHandler.getRootNode(), var1);
- } catch (Exception var2) {
- if (!(var2 instanceof SAXException)) {
- throw new SAXException(var2);
- }
-
- throw (SAXException)var2;
- }
-
- this.m_sourceTreeHandler = null;
- }
-
- public void startElement(String var1, AttributeList var2) throws SAXException {
- this.m_sourceTreeHandler.startElement(var1, var2);
- }
-
- public void endElement(String var1) throws SAXException {
- this.m_sourceTreeHandler.endElement(var1);
- }
-
- public void startCDATA() throws SAXException {
- this.m_isCData = true;
- }
-
- public void endCDATA() throws SAXException {
- this.m_isCData = false;
- }
-
- public void characters(char[] var1, int var2, int var3) throws SAXException {
- if (this.m_isCData) {
- this.m_sourceTreeHandler.cdata(var1, var2, var3);
- } else {
- this.m_sourceTreeHandler.characters(var1, var2, var3);
- }
- }
-
- public void charactersRaw(char[] var1, int var2, int var3) throws SAXException {
- this.m_sourceTreeHandler.charactersRaw(var1, var2, var3);
- }
-
- public void ignorableWhitespace(char[] var1, int var2, int var3) throws SAXException {
- this.m_sourceTreeHandler.charactersRaw(var1, var2, var3);
- }
-
- public void processingInstruction(String var1, String var2) throws SAXException {
- this.m_sourceTreeHandler.processingInstruction(var1, var2);
- }
-
- public void comment(char[] var1, int var2, int var3) throws SAXException {
- this.m_sourceTreeHandler.comment(var1, var2, var3);
- }
-
- public void startEntity(String var1) throws SAXException {
- this.m_sourceTreeHandler.startEntity(var1);
- }
-
- public void endEntity(String var1) throws SAXException {
- this.m_sourceTreeHandler.endEntity(var1);
- }
-
- public void startDTD(String var1, String var2, String var3) throws SAXException {
- }
-
- public void endDTD() throws SAXException {
- }
-
- void addResultAttribute(MutableAttrListImpl var1, String var2, String var3) {
- boolean var4 = var2.startsWith("xmlns:");
- if (var2.equals("xmlns") || var4) {
- String var5 = var4 ? var2.substring(6) : "";
- ResultNameSpace var6 = new ResultNameSpace(var5, var3);
- if (!this.m_resultNameSpaces.isEmpty()) {
- ResultNameSpace var7 = (ResultNameSpace)this.m_resultNameSpaces.peek();
- if (m_emptyNamespace == var7) {
- this.m_resultNameSpaces.setElementAt(var6, this.m_resultNameSpaces.size() - 1);
- } else {
- while(var7.m_next != null) {
- var7 = var7.m_next;
- }
-
- var7.m_next = var6;
- }
- }
- }
-
- var1.addAttribute(var2, "CDATA", var3);
- }
-
- private boolean pendingHasDefaultNS() {
- if (this.m_pendingAttributes != null) {
- int var1 = this.m_pendingAttributes.getLength();
-
- for(int var2 = 0; var2 < var1; ++var2) {
- if (this.m_pendingAttributes.getName(var2).equals("xmlns")) {
- return true;
- }
- }
- }
-
- return false;
- }
-
- private String excludePrefix(String var1) {
- if (this.m_stylesheetRoot != null) {
- int var2 = var1.indexOf(58);
- if (var2 > 0) {
- String var3 = var1.substring(0, var2);
- StringToStringTable var4 = this.m_stylesheetRoot.getExcludeResultPrefixes();
- if (var4 != null && var4.contains(var3)) {
- var1 = var1.substring(var2 + 1);
- }
- }
- }
-
- return var1;
- }
-
- protected void flushPending() throws SAXException {
- if (this.m_pendingStartDoc && this.m_pendingElementName != null && !this.m_stylesheetRoot.isOutputMethodSet() && this.m_pendingElementName.equalsIgnoreCase("html") && !this.pendingHasDefaultNS()) {
- FormatterToXML var1;
- try {
- var1 = (FormatterToXML)this.m_flistener;
- } catch (ClassCastException var2) {
- var1 = null;
- }
-
- if (var1 != null) {
- this.m_stylesheetRoot.setOutputMethod("html");
- this.m_flistener = new FormatterToHTML(var1);
- }
- }
-
- if (this.m_pendingStartDoc && this.m_mustFlushStartDoc) {
- this.m_pendingStartDoc = false;
- this.m_flistener.startDocument();
- if (this.m_traceListeners != null) {
- this.fireGenerateEvent(new GenerateEvent(this, 1));
- }
- }
-
- if (this.m_pendingElementName != null && this.m_mustFlushStartDoc) {
- if (this.m_stylesheetRoot.m_cdataSectionElems != null) {
- if (this.isCDataResultElem(this.m_pendingElementName)) {
- this.m_cdataStack.push(TRUE);
- } else {
- this.m_cdataStack.push(FALSE);
- }
- }
-
- this.m_flistener.startElement(this.m_pendingElementName, this.m_pendingAttributes);
- if (this.m_traceListeners != null) {
- this.fireGenerateEvent(new GenerateEvent(this, 3, this.m_pendingElementName, this.m_pendingAttributes));
- }
-
- this.m_pendingAttributes.clear();
- this.m_pendingElementName = null;
- }
-
- }
-
- // $FF: synthetic method
- static VariableStack access$0(XSLTEngineImpl var0) {
- return var0.m_variableStacks;
- }
-
- // $FF: synthetic method
- static Boolean access$1() {
- return TRUE;
- }
- }
-